package lambda;

import java.io.File;
import java.io.FileFilter;

/**
 * JDK8之后推出了一个新的特征:lambda表达式
 *
 * lambda表达式可以用更精简的语法创建匿名内部类
 * 语法:
 * (参数列表)->{
 *     方法体
 * }
 *
 * 需要注意:使用lambda表达式创建的匿名内部类在实现接口时要求该接口只能有一个抽象方法,否则
 * 不能用lambda表达式
 */
public class LambdaDemo {
    public static void main(String[] args) {
        FileFilter filter = new FileFilter() {
            @Override
            public boolean accept(File file) {
                return file.getName().startsWith(".");
            }
        };
        FileFilter filter1 = (File file) -> {
            return file.getName().startsWith(".");
        };
        //lambda表达式参数类型可以或略不写
        FileFilter filter2 = (file) -> {
            return file.getName().startsWith(".");
        };
        //如果参数只有一个()可以不写
        FileFilter filter3 = f -> {
            return f.getName().startsWith(".");
        };
        /*
        如果方法体只有一行代码,则方法体的{}可以不用写

        并且如果这句代码包含return时,return可以不写;
         */
        FileFilter filter4 = f -> f.getName().startsWith(".");

        File dir=new File(".");
        File[] subs =dir.listFiles(f -> f.getName().startsWith("."));
        for (int i=0;i<subs.length;i++){
            System.out.println(subs[i].getName());
        }
    }
}

